package com.gitee.ly.chain;

import java.util.List;

/**
 * Flow 流程
 *
 * @author ly
 **/
public interface Flow<DataModel> {
    /**
     * 流程类型。系统中所有流程的类型是唯一的。
     *
     * @return
     */
    String getType();

    /**
     * 流程名称。系统中所有流程的名称是唯一的。
     *
     * @return
     */
    String getName();

    /**
     * 该流程下的所有环节，按环节顺序从小到大排好。
     *
     * @return
     */
    List<Link> allLink();

    /**
     * 执行流程
     *
     * @param data
     */
    void excute(DataModel data);
}
